/*  This file is part of CASpp.

    CASpp is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    CASpp is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with CASpp.  If not, see <http://www.gnu.org/licenses/>.

    Copyright 2014 Jérome LAURENS

    See https://code.google.com/p/idalgo/

*/

#include "rational.h"

CASPP_NS_BEGIN

Rational makeRational(const Integer & __x) {
    Rational r;
    mpq_set_z(r.backend().data(),__x.backend().data());
    return r;
}

const std::string description(const Rational & __x, const int base) {
    CASppParameterAssert((base>1 && base <63) || (base>-37 && base<-1));
    const mpq_t & op = __x.backend().data();
    char * s = mpq_get_str(0,base,op);
    boost::scoped_ptr<char> p(s);
    return std::string(s);
}

CASPP_NS_END
